var SERVER_CONFIG = process.env.SERVER_CONFIG;
function getConfig(property, def) {
	return util.config(SERVER_CONFIG, property) || def || null;
}
function getCommon(property, def) {
	return util.config('/config/common.js', property) || def || null;
}

var UC_HOST  = getConfig('HOST.UC');
var DSP_HOST = getConfig('HOST.DSP');

// 视频文件类型
var VIDEO_TYPE = getCommon('VIDEO_TYPE');

var config = {
	"#comment": "DSP APP Config File"
	,"Release": getConfig('RELEASE')
	,"TEST_ENVIRONMENT": getConfig('TEST_ENVIRONMENT')
	// Radon 框架设置
	,"radon": {
		"#comment": "Radon Framework Config Section"
		// 调试模式
		,"debug_mode"	: getConfig('RADON.DEBUG.APP')
		,"debug_skips": [0]
		//配置use 路径
		,"paths"		: getCommon('USE_PATH')
		// 默认进程脚本文件路径
		,"process_file"	: '@radon/lib/process.js'
		// 错误代码文件
		,"error_file"   : '/config/data/error_code.js'
		// radon ipc config
		,"transport": {
			// 路由管理模块
			'router': 'ROUTER@MASTER',
			// 会话管理模块
			'session': 'SESSION@MASTER',
			// 链接管理模块
			'link': 'LINK@MASTER',
			// 接口分组名称
			'interface': 'INTERFACE',
			// requset 的超时时间.
			'request_timeout': getConfig('APP.REQUEST_TIMEOUT')
		}
		// 启动进程信息
		,"processes"	: {
			"MASTER": {
				'timeout': 500,
				'modules': [
					{
						// ROUTER
						'name': 'ROUTER',
						'file': '@radon/lib/modules/router.js',
						'router_file': '/config/app/router.js'
					},
					{
						'name': 'LINK',
						'file': '@radon/lib/modules/link.js',
						// 连接超时时间 (秒)
						'timeout': 900
					},
					{
						'name': 'SESSION',
						'file': '@radon/lib/modules/session.js',
						// 会话超时时间 (秒)
						'timeout': 1800,
						'token_size': 30,
						// 会话静态化保存
						'storage': {
							'save_interval': 10,
							'type': 'file',
							'file': '@radon/lib/core/session_storage.js',
							'path': getConfig('RADON.SESSIONS.APP'),
							// 'type': 'mongo',
							'connection': 'mongodb://'+getConfig('DB.APP.SESSION.HOST'),
							'collection': getConfig('DB.APP.SESSION.COLLECTION')
						}
					},
					{
						// WEBSOCKET MODULE
						'name': 'SOCKET',
						'file': '@radon/lib/interface/socket.js',
						'path': '/api/dsp/ws',
						'prefix': 'WS/',
						'init_timeout': 15,
						'request_timeout': getConfig('APP.REQUEST_TIMEOUT'),
						'link_timeout': 120,
						'touch_time': 60,
						'interval': 50,
						'link_event_uri': 'APP/WEBSOCKET_INIT',
						'sess_cookie': getConfig('COOKIE.APP'),
						'cookie_option': null,
						'log_file': getConfig('RADON.LOG_REQUEST_FILE'),
						'listen': getConfig('RADON.PORTS.APP.WEBSOCKET')
					}
				]
			},
			"HTTP": {
				'modules': [
					//HTTP 监听端口
					{
						'name': 'HTTP_API',
						'upload_path': getConfig('PATH.HTTP_UPLOAD'),
						'file': '@radon/lib/interface/api.js',
						'prefix': 'HTTP_API/',
						'path': '/api/dsp/',
						'strip_path': true,
						'link_timeout': 600,
						'touch_time': 60,
						'interval': 5000,
						'request_timeout': getConfig('APP.REQUEST_TIMEOUT'),
						'sess_cookie': getConfig('COOKIE.APP'),
						'cookie_option': {'path': '/', 'httpOnly': true},
						'log_file': getConfig('RADON.LOG_REQUEST_FILE'),
						'listen': getConfig('RADON.PORTS.APP.API')
					},
					{
						'name': 'HTTP_PUB',
						'upload_path': getConfig('PATH.HTTP_UPLOAD'),
						'file': '@radon/lib/interface/api.js',
						'prefix': 'HTTP_API/',
						'path': '/api/pub/',
						'strip_path': true,
						'link_timeout': 600,
						'touch_time': 60,
						'interval': 5000,
						'request_timeout': getConfig('APP.REQUEST_TIMEOUT'),
						'log_file': getConfig('RADON.LOG_REQUEST_FILE'),
						'listen': getConfig('RADON.PORTS.APP.PUB')
					},
				]
			},
			"QUERY": {
				'file': '@radon/lib/cluster.js',
				'execArgv': [
					'--max-old-space-size=' + getConfig('RADON.CLUSTER_QUERY_MEM', 1500)
				],
				'threads': getConfig('RADON.CLUSTER_QUERY_THREAD', 2),
				'thread_queue': getConfig('RADON.CLUSTER_QUEUE_MAX', 5),
				'force_clear': true,
				"modules": [
				
				]
			},
			// 功能性的进程模块
			"UTIL": {
				'modules': [
				]
			},
			// 业务类
			"BUSINESS": {
				'file': '@radon/lib/cluster.js',
				'execArgv': [
					'--max-old-space-size=' + getConfig('RADON.CLUSTER_APP_MEM', 1500)
				],
				'threads': getConfig('RADON.CLUSTER_APP_THREAD', 2),
				'thread_queue': getConfig('RADON.CLUSTER_APP_MAX', 5),
				'modules': [
				]
			},
			"LOGIN": {
				'modules': [
				]
			},
			"PROXY": {
				'modules': [
					{
						'name': 'STATIC',
						'file': '@radon/lib/interface/static.js',
						'root': '/../web',
						'listen': getConfig('RADON.PORTS.APP.HTTP'),
						'alias':[]
					},
					{
						'name': 'PROXY',
						'file': '@radon/lib/interface/proxy.js',
						'listen': getConfig('RADON.PORTS.APP.PROXY'),
						'request_timeout': getConfig('APP.REQUEST_TIMEOUT'),
						'remotes': [
						]
					}
				]
			},
			"EXPORT_WORKER": {
				'execArgv': [
					'--max-old-space-size=' + getConfig('RADON.CLUSTER_EXPORT_MEM', 1500)
				],
				"modules": [
				
				]
			},
			"DOWNLOAD_WORKER":
				{
					'modules': [
					
					]
				},
			"SCHEDULED": { //任务计划，定时执行
				'modules': [
				
				]
			},
			"BUDGET_SCHEDULED": {
				'modules': [
				]
			},
		}
	}
	// 应用常用配置
	,"app": {
		"min_rest_credit": 10, //用户能开启活动的最小信用额度，单位是元
		'http_timeout': getConfig('APP.HTTP_TIMEOUT'),
		'front_log': getConfig('RADON.LOG_FRONT_FILE'),
		'host': DSP_HOST,
		'user_namespace': 'dspUser',
		'right_path': '/lib/dspRight',
		'datacenter_config': '/config/datacenter.js',
		'notify': getConfig('REDIS_NOTIFY'),
		'notifyUri': 'notify@SCHEDULED:send',
		'labelUri': 'label@SCHEDULED:change',
		'customDownloadUri': 'customDownload_dispatch@SCHEDULED:add',
		'customDownloadStartUri': 'customDownload_worker@DOWNLOAD_WORKER:add',
		'monitorUri': 'smartMonitor@SCHEDULED:change',
		'system_event': {
			'userChange': 'cast_userChange'
		},
		'campaign_code': getConfig('CAMPAIGN_CODE'),
		'adExchange': {
			"include": [10013, 10100] // 默认渠道包括的渠道
		},
		'cache_time': {
			intervalClear: getConfig('CACHE.INTERVAL_CLEAR', 60 * 60), //自动清除cache 过期数据 间隔,一小时
			category: getConfig('CACHE.CATEGORY_TIME', 3600 * 24 * 7), // 分类的缓存时间, 秒,现设为7天
			spot: getConfig('CACHE.SPOT_TIME', 3600 * 3), // 广告位的缓存时间, 秒,现设3小时，
			adExchange: getConfig('CACHE.ADEXCHANGE_TIME', 60), // 渠道的缓存时间, 秒, 现设为一分钟
			user: getConfig('CACHE.USER_TIME', 60 * 10) // 用户模块的的缓存时间, 秒, 现设为10分钟
		},
		'preview_script_cdn': getConfig('PREVIEW_SCRIPT_CDN'),
		'video_type': VIDEO_TYPE,
		// 本地上传视频的限制大小为10m
		'upload_video_limit': 10*1024*1024,
		'audit_config': getConfig('AUDIT'),
		'master_account': getConfig('APP.MASTER_ACCOUNT'),
		"mail":getConfig('APP.MAIL.DEFAULT')
	}
	,"budget": {
		// 预算控制
		"frequency": {
			"minRemain": 100,
			"minRemainTime": 60,//second
			"updateInterval": 5, //second
			"user_amount": 5,
			"daily_budget": 5
		}
		//取活动或账号消耗费用实时接口.
		,"server": getConfig('COST')
		//redis中记录的金额问题 100，因为计费为分为单位，1000因为CPM
		,"budget_plus": 100 * 1000
	}
	,"http_proxy": getConfig('HTTP_PROXY')
	,"hawk": {
		'user_id_field': 'UserId',
		'user_model': 'DspUser',
		'timeout': getConfig('DATACENTER_TIMEOUT'),
		'metric_field': getCommon('METRIC_FIELD')
	}
	// UC API 设置
	,"uc": getConfig('UC')
	,"admin_api": {
		'url': DSP_HOST + '/api/admin/app/',
		'id': 1874,
		'name': 'ADMIN',
		'token': 'm2j#kmnmwqopioizvcopUwekrnncz&8zEJMAuWu1lJ#fx'
	}
	// 审核系统 API
	,"audit_api":getConfig('AUDIT')
	
	// 数据库设置
	,"db": {
		"default_server": "MAIN",
		"default_mysql": "MYSQL",
		// 最长的mongo 实例数目
		"max_queue": getConfig('DB.APP.MAX_QUEUE', 50),
		"servers" : {
			"MAIN" : {
				uri: getConfig('DB.APP.MAIN'),
				type: "MongoDB"
			},
			"LOG" : {
				uri: getConfig('DB.APP.LOG'),
				type: "MongoDB"
			},
			"CONFIG" : {
				uri: getConfig('DB.APP.CONFIG'),
				type: "MongoDB"
			},
			"MYSQL": {
				uri: getConfig('DB.APP.MYSQL'),
				type: 'MySQL'
			}
		},
		"models" : {
			"lib/IdCounter" : {
				server: "CONFIG",
				collection: "sys.IdCounter"
			},
			"lib/ModelChangeLog" : {
				server: "LOG",
				collection: "app.ModelChangeLog"
			},
			"OperationLog" : {
				server: "LOG",
				collection: "app.ModelChangeLog"
			},
			"UploadFile" : {
				server: "LOG"
			}
		},
		"schema": util.normalizePath("/schema")
	}
	//文件夹配置
	,"path" : {
		"offline": getConfig('PATH.OFFLINE'),
		// 文件操作命令
		"unzip_bin": getConfig('BIN.UNZIP'),
		"tar_bin": getConfig('BIN.ZIP'),
		// 虚拟文件根路径
		"root": getConfig('PATH.FILE'),
		"oem_root": getConfig('PATH.OEM_ROOT'),
		'version_file': getConfig('PATH.VERSION_FILE'),
		"lang": {
			root: util.normalizePath('/../web/i18n/')
			,def: 'zhCN'
			,path_func: {
				'zhHK' : '/resources/lang/cn2hk.js'
			}
		},
		"gd_temp": "upload_temp/gd_temp",
		"upload" : "upload_temp",
		"default" : util.normalizePath('/resources/default.png'), // 默认图片返回
		"thumb" : {
			"store": "upload/thumb",
			"temp": "upload_temp/thumb"
		},
		"whisky" : {
			"store": "upload/whisky",
			"temp": "upload_temp/whisky",
			"preview": getConfig("PATH.WHISKY_PREVIEW")
		},
		"sweetyCreative" : {
			"store": "upload/sweetyCreative",
			"temp": "upload_temp/sweetyCreative"
		},
		"cover" : {
			"store": "upload/cover",
			"temp": "upload_temp"
		},
		// 手工物料
		"manuallyMaterials" : {
			"store": "upload/sweetyCreative",
			"temp": "upload_temp/sweetyCreative"
		},
		//资质
		"certificate": {
			"store": "upload/certificate",
			"temp": "upload_temp/certificate"
		},
		"certificateZip": {
			"store": "upload/certificate",
			"temp": "upload_temp/certificate"
		},
	}
	// 上传文件配置
	,"upload": {
		"default" : {
			'maxSize' : 10*1024*1025
		},
		"sweetyCreative" : {
			'maxSize' : 100*1024,
			'typeSize' : {
				/*				'flv' : 10*1024*1024,
				 'mp4' : 10*1024*1024*/
			},
			'types' : 'swf,jpg, jpeg, png, gif,' + VIDEO_TYPE,
			'handle' : {
				'module' : 'creative',
				'process' : 'BUSINESS',
				'event' : 'upload'
			}
		}
	}
	//预览处理方法
	,"preview" : {
		//'match':/^HTTP_API\/preview\/(\w+)/
		"whisky" : {
			'process' : 'UTIL',
			'module' : 'preview',
			'event' : 'whisky',
			'url': {
				'match': /^preview\/whisky(\/(\S+)\/)?$/,
				'ret': ['', '','id'] //对应上面正则结果
			}
		},
		"video" : {
			'process' : 'UTIL',
			'module' : 'preview',
			'event' : 'video',
			'url': {
				'match': /^preview\/video(\/(\S+)\/)?$/,
				'ret': ['', '', 'id'], //对应上面正则结果
				'param': { 	//url带的参数
					'u' : 'url'
				}
			}
		},
		"image" : {
			'process' : 'UTIL',
			'module' : 'preview',
			'event' : 'image',
			'url': {
				'match': /^preview\/image(\/(\S+)\/)?$/,
				'ret': ['', '', 'id'], //对应上面正则结果
				'param': { 	//url带的参数
					'u' : 'url'
				}
			}
		},
		"sweetyCreative" : {
			'process' : 'UTIL',
			'module' : 'preview',
			'event' : 'sweetyCreative',
			'url': {
				'match': /^preview\/sweetyCreative(\/(\S+)\/)?$/,
				'ret': ['', '', 'id'], //对应上面正则结果
				'param': { 	//url带的参数
					'u' : 'url'
				}
			}
		},
		"sweety" : {
			'process' : 'UTIL',
			'module' : 'preview',
			'event' : 'sweety',
			'url': {
				'match': /^preview\/sweety(\/(\S+)\/)?$/,
				'ret': ['', '','id'] //对应上面正则结果
			}
		}
		/*
		 "html": {
		 'process' : 'UTIL',
		 'module' : 'preview',
		 'event' : 'html',
		 'url': {
		 'match': /^preview\/html\/(\w+)\/(.+)\/(\w+)/,
		 'ret': ['', 'type', 'id', 'isTemp'] //对应上面正则结果
		 }
		 }*/
	}
	//缩略图缓存时间
	,"thumb": {
		"file_expire_time": 4, // 截图保留时间，小时制。
		"cache_time": 1209600,
		/*		"cover": {
		 "no_cache": true
		 },
		 "certificate": {
		 "no_cache": true
		 },
		 "invoice": {
		 "no_cache": true
		 }*/
	}
	,"export": {
		config: {
			noticeInfo: {
				module: "monitor",
				event: "noticeInfo"
			}
			// pdmp人群
			,PDMPList: {
				'module': 'PDMP'
				,'event': 'listTag'
			}
			/*			'productPlatform': {
			 'module': 'platform'
			 ,'event': 'list'
			 }*/
		}
		,default_process: 'EXPORT_WORKER'
	}
	//命令行路径配置.
	,"BIN": getConfig('BIN')
};
